home *** CD-ROM | disk | FTP | other *** search
/ MacFormat España 25 / MacFormat n. 25 (Spain) / MacFormat 25.bin / mac / Componentes / OpenDoc / BBEdit•od Lite 1.0 / BBEdit•od Lite Quickstart < prev    next >
Encoding:
Text File  |  1996-11-26  |  24.3 KB  |  595 lines

  1. This QuickStart document provides a brief overview of some of the
  2. commands available in BBEdit Lite. For more general information about
  3. BBEdit Lite, consult the "About BBEdit Lite" document.
  4.  
  5. The topics covered in this document are:
  6.  
  7.     * Installation
  8.     * Editing Documents
  9.         - Key Equivalents
  10.     * More on Wrapping
  11.     * Searching
  12.     * Parting Shots
  13.  
  14. ---
  15.  
  16. Installation
  17. ============
  18.  
  19. BBEdit•od Lite requires version 1.1 or later of OpenDoc.
  20.  
  21. The distribution package consists of the following major components:
  22.  
  23. *    The "BBEdit•od Lite" component
  24. *    The "MercutioPlugIn" component
  25. *    The "BBEdit•od Lite 1.0" stationery file
  26.  
  27. Place the “MercutioPlugIn” file into the “OpenDoc Shell Plug-Ins”
  28. folder. This folder may be found in the “OpenDoc” folder, which in turn
  29. resides in the “Editors” folder in your active system folder.
  30.  
  31. Place the “BBEdit•od Lite” file (which is the OpenDoc part itself) in
  32. the “Editors” folder, which resides in your active System Folder.
  33.  
  34. Place the “BBEdit•od Lite 1.0” stationery file in the “Stationery”
  35. folder which is at the top level of your startup disk.
  36.  
  37. If you would like to use BBEdit extensions with BBEdit•od Lite, then
  38. make an alias to an existing “BBEdit Extensions” folder, and place the
  39. alias in your active system folder.
  40.  
  41. Please be aware that, due to constraints inherent to OpenDoc and the
  42. BBEdit extension architecture, not all BBEdit extensions are compatible
  43. with BBEdit Lite for OpenDoc. In particular, it is not possible to use
  44. the HTML Tools which are included with the commercial version of BBEdit
  45. in this manner.
  46.  
  47. From this point, you may use standard OpenDoc techniques to embed
  48. BBEdit•od Lite content in your existing OpenDoc documents, or to create
  49. new BBEdit•od Lite documents.
  50.  
  51. ---
  52.  
  53. Editing Documents
  54. ======= =========
  55.  
  56. In terms of its basic editing functionality, BBEdit Lite behaves like
  57. any other word processor or text editor on the Macintosh: any typed
  58. characters are inserted at the insertion point; if there is a selection
  59. present, the selection is replaced by the first typed character, and the
  60. insertion point is placed after the first typed character.
  61.  
  62. The insertion point is indicated by a blinking vertical bar.
  63.  
  64. If there is any text selected in the active (or front) window, it is
  65. highlighted using your Mac's default highlight color. If there is text
  66. selected in a window that is inactive (not the front window), it is
  67. framed in the highlight color.
  68.  
  69. As you type, BBEdit Lite scrolls the window's contents so that the
  70. insertion point is visible. Unless you have the "Soft Wrap Text" option
  71. selected, the window may scroll horizontally as you type.
  72.  
  73. To move text from one place to another, select the text you wish to
  74. move, and choose the "Cut" command from the Edit menu. The selected text
  75. will be deleted, and placed in a special area called the "Clipboard".
  76. (The Clipboard always contains the last text that you cut or copied.)
  77. You can then use the "Paste" command on the Edit menu to place the text
  78. elsewhere in the document you are editing, or even in another window
  79. altogether. Also, any text that you cut or copy can be pasted into
  80. another application. You can place text in the Clipboard without
  81. deleting it by choosing "Copy" from the Edit menu.
  82.  
  83. When you Paste, the text that's in the Clipboard will replace the
  84. current selection (if there is one), or be inserted at the insertion
  85. point. Paste doesn't remove text from the Clipboard, so you can Paste as
  86. many times as you wish.
  87.  
  88. To delete selected text, hit the "Delete" key on your keyboard, or
  89. choose "Clear" from the Edit menu. If you have a keyboard with a numeric
  90. keypad on it, you can hit the "Clear" key on the keypad to delete the
  91. selected text.
  92.  
  93. To select all the text in the front editing window, choose "Select All"
  94. from the Edit menu. You can then cut, copy, or perform any other action
  95. that affects selected text.
  96.  
  97. BBEdit Lite provides an assortment of facilities for transforming text
  98. in various ways. The commands to transform text are all found under the
  99. Text menu:
  100.  
  101. *   Balance locates the pair of parentheses, braces, or brackets which
  102.     encloses the current selection range or insertion point. If there
  103.     are unmatched parentheses, braces, or brackets, BBEdit Lite will
  104.     beep.
  105.  
  106. *   Change Case... allows you to automatically switch between upper and
  107.     lower case characters for entire words, first letters of words, or
  108.     first letters of lines.
  109.  
  110. *   Shift Left and Shift Right indent the selected text by one tab stop
  111.     (in the case of Shift Left), or outdent by one tab stop (for Shift
  112.     Right).
  113.  
  114. *   The Hard Wrap... command is used for wrapping long lines of text and
  115.     filling paragraphs. Essentially, it uses carriage returns to break
  116.     lines of text, to keep them from running off to the right of your
  117.     screen.
  118.  
  119. *   Unwrap removes carriage returns and spaces between groups of
  120.     text. Essentially, it performs the reverse function of the "Hard
  121.     Wrap..." command.
  122.  
  123. *   Zap Gremlins... is useful for finding and altering or removing 
  124.     non-printing characters in your text files.
  125.  
  126. *   Entab converts runs of spaces into tabs, according to the current
  127.     setting in the "Font and Tabs..." dialog. This transformation is
  128.     useful when downloading text from a mainframe computer or on-line
  129.     service which uses spaces to line up columns of text; when
  130.     displaying the text in a monospaced font, columns will still usually
  131.     not line up unless you Entab the text.
  132.  
  133. *   Detab converts tabs into runs of spaces, according to the current
  134.     setting in the "Font and Tabs..." dialog. This is useful when
  135.     uploading text to a mainframe or on-line service which has no
  136.     concept of tabs as column separators.
  137.  
  138.  
  139. Cursor Key Equivalents:
  140.  
  141. Sometimes, you may find prefer to do word selection or deletion 
  142. directly from the keyboard. Here are some available shortcuts:
  143.  
  144. Key                        Modifier          Action
  145. ---                        --------        ------
  146. (left/right) Arrow        (none)            Move 1 character left/right
  147.  
  148. (left/right) Arrow        Option            Move 1 word left/right
  149.  
  150. (left/right) Arrow        Command            Move to beginning/end of line
  151.  
  152. (up/down) Arrow              (none)            Move up/down 1 line in file
  153.  
  154. (up/down) Arrow             Option            Move to previous/next screen page
  155.  
  156. (up/down) Arrow              Command            Move to top/bottom of file
  157.  
  158. [any of the above]        Shift            Make or extend a selection range
  159.  
  160. Delete                       (none)            Deletes characters backward
  161.                                         (toward beginning of line)
  162.  
  163. Delete                       Option            Deletes words backward
  164.                                         (toward beginning of line)
  165.  
  166. Delete                       Command            Deletes all characters from
  167.                                         beginning of line containing
  168.                                         selection range to end of selection
  169.                                         range
  170.  
  171. Special Keys:
  172.  
  173. The Apple Extended Keyboard has additional function keys on it, which are
  174. usable within BBEdit Lite:
  175.  
  176. Key                    Action
  177. ---                    ------
  178. F1                    Undo
  179.  
  180. F2                    Cut
  181.  
  182. F3                    Copy
  183.  
  184. F4                    Paste
  185.  
  186. "del"                Forward Delete
  187.  
  188. Home/End            Scroll to start/end of document
  189.  
  190. Cmd-Home/End        Move insertion point to start/end of document
  191.  
  192. Page Up/Down        Scroll up/down a page
  193.     
  194.  
  195. ---
  196.  
  197. More on Wrapping
  198. ==== == ========
  199.  
  200. For composing text in situations where carriage returns are used as line
  201. separators (rather than paragraph separators), "hard" text wrapping is
  202. useful for formatting your text.
  203.  
  204. To hard-wrap text in the current document window, choose "Hard Wrap..."
  205. from the Text menu.
  206.  
  207. The settings on the left half of the "Hard Wrap..." dialog box control
  208. how much of the text is wrapped, and the maximum length of the lines
  209. after wrapping.
  210.  
  211. The group of radio buttons controls the length of lines after they have
  212. been wrapped:
  213.  
  214. *    The "Philip Bar" button will break lines of text at the philip bar.
  215. (To see the location of the philip bar, turn on "Show Philip Bar" in the
  216. Windows section of the Preferences dialog.) The philip bar indicates the
  217. maximum usable width of a document window when the window is zoomed to
  218. full size on a nine-inch "classic" Macintosh screen. For this reason,
  219. you are guaranteed that text wrapped to the philip bar will be readable
  220. without horizontal scrolling by anyone on any Macintosh.
  221.  
  222. *    If "Window Width" is selected, no wrapped line will be longer than
  223. the current width of the window. This option is useful if you'd like the
  224. lines to be a little longer or a little shorter than is provided for by
  225. the philip bar; just size the window appropriately and wrap.
  226.  
  227. *    If "Character Width" is selected, the number in the text field
  228. designates the maximum number of characters allowed on any line; a line
  229. that exceeds this number of characters in length will be wrapped. The
  230. "Character Width" setting is useful for preparing postings to on-line
  231. services, which can break lines in an unattractive fashion if they're
  232. longer than a fixed number of characters (usually 78 to 80).
  233.  
  234. The controls on the right half of the dialog control paragraph wrapping.
  235. If the "Paragraph Fill" check box is turned off, long lines will be
  236. wrapped. Short lines will be left untouched.
  237.  
  238. ---
  239.  
  240. Searching
  241. =========
  242.  
  243. BBEdit Lite gives you the ability to search for strings of characters
  244. within the current document. When you choose "Find..." from the Search
  245. menu, BBEdit Lite will present a dialog box with several options.
  246.  
  247. The edit field to the right of "Search For:" contains the string of
  248. characters that you wish to search for. This string will be used as it
  249. is displayed if the "Literal" button at the top of the dialog is chosen.
  250. literal characters,  If the "Grep" button has been selected, the string
  251. in this edit field is a regular expression. See the section below for
  252. more information on grep searching.
  253.  
  254. The edit field to the right of "Replace With:" contains the string of
  255. characters that will replace the current selection whenever you choose
  256. "Replace", "Replace and Find Again", or "Replace All" from the Search
  257. menu.
  258.  
  259. Note: To search for an explicit carriage return, line feed, or tab, you
  260. can type the literal character by holding down the Command key and
  261. hitting the Return or Tab key, or typing "\n" for a line feed, "\r" for
  262. a carriage return, or "\t" for a tab. You can also type Control-J,
  263. Control-M, and Control-I, respectively. To search for a -literal-
  264. occurrence of an escape (for example, in C or Rez program source), use
  265. two backslashes: "\\n", "\\r", and "\\t". Also, a "\\" will be
  266. interpreted to mean a single backslash, just as it does in C.
  267.  
  268. The "Match Case" check box determines whether the search is
  269. case-sensitive or not. If "Match Case" is checked, only text which has
  270. the same combination of upper and lower case letters as the Search For
  271. string will be found.
  272.  
  273. The "Entire Word" check box determines whether the text being searched
  274. must be bounded by word breaks (spaces, dashes, and other punctuation).
  275.  
  276. The "Start at Top" check box will cause the entire document to be
  277. searched, starting at the beginning of the document and proceeding
  278. forward to the end of the document.
  279.  
  280. The "Wrap Around" check box will cause the entire document to be
  281. searched, regardless of where the current insertion point or selection
  282. range lies. Ordinarily, only the text from the start of the selection
  283. range to the end of the document is searched. If "Wrap Around" is turned
  284. on, and the search string isn't found between the start of the selection
  285. range and the end of the document, the search will automatically restart
  286. from the beginning of the document. If the search string is found in the
  287. document after wrapping around, BBEdit Lite will blink the menu bar to alert
  288. you.
  289.  
  290. If the "Search Backwards" check box is checked, BBEdit Lite will search
  291. backwards from the start of the insertion point to the start of the
  292. document, rather than forward to the end of the document. If "Wrap
  293. Around" is checked, and the search string is not found between the start
  294. of the document and the start of the selection range, the backwards
  295. search will resume from the end of the document.
  296.  
  297. If the "Selection Only" check box is checked, BBEdit Lite will search only the
  298. selected range of text.
  299.  
  300. Note: If "Start at Top" is checked, the "Search Backwards", "Selection
  301. Only", and "Wrap Around" options are automatically disabled.
  302.  
  303. After you have entered the search and replace strings and set the search
  304. options appropriately, you can click any of the buttons arrayed along
  305. the right-hand edge of the dialog:
  306.  
  307. -    If you click "Find", BBEdit Lite will search for the current search
  308.     string, using the current search options.
  309.  
  310. -    If you click "Replace", BBEdit Lite will search for the next occurrence
  311.     of the search string, using the current search options, and replace
  312.     it with the specified replace string.
  313.  
  314. -    If you click "Replace All", BBEdit Lite will locate all occurrences of
  315.     the search string, and replace them with the specified replace
  316.     string.
  317.         
  318. -    If you click "Don't Find", BBEdit Lite will accept the current search
  319.     strings and options, but will not perform the search; you can then
  320.     choose "Find Again" from the Search menu to start the search.
  321.  
  322. ---
  323.  
  324. Grep Searching
  325.  
  326. Grep is a method of pattern matching that derives from the Unix(TM)
  327. operating system.  You are probably familiar with simple pattern
  328. matching from using word processors;  when you ask a word processor to
  329. find all instances of the word "black", it is performing a simple
  330. pattern match, where each letter has to match literally.  Matching
  331. strings in this manner is not very hard.
  332.  
  333. The ability to match strings in a more general manner is both more
  334. powerful and more complicated.  It allows for sophisticated pattern
  335. matching operations, such as matching all words that begin with the
  336. letter "P" and end with the letters "er", or deleting the first word of
  337. every line.  Grep provides a powerful means of doing this.
  338.  
  339. To use Grep for searching documents, just select the "Grep" button in
  340. the Find... dialog.
  341.  
  342. The popup menu next to the "Patterns:" in the dialog contains a list of
  343. your most commonly-used Grep patterns. You can change this list in the
  344. "Grep Patterns" section of the Preferences... dialog.
  345.  
  346.  
  347. How Grep Works
  348.  
  349. The "grep" mode of searching and replacing is a powerful tool. Although
  350. somewhat slower than normal text searching, grep allows the user to
  351. search for one of a set of many strings instead of a particular string. 
  352. As a simple example, you can search for any occurrence of an identifier
  353. beginning with the letter P, or all lines that begin with a left brace.
  354.  
  355. A pattern is a group of characters which in turn describe a particular
  356. set of strings. These strings are also composed of characters, which may
  357. be anything from ordinary letters or numbers to control characters.  For
  358. example, there is a set of strings which begin with the letter P and end
  359. with the letter r; the strings "Ptr" and "ProcPtr" are two members of
  360. this set (though there are also many others). 
  361.  
  362. In just the same manner, there is a set of strings which consists of the
  363. number 1 followed by a space, then a three-letter word, and ending with
  364. a carriage return. Strings such as "1 bat\r" and "9 top\r" would be
  365. members of this set. Please note the use of "\r" to denote a carriage
  366. return, as explained in the previous section.
  367.  
  368. We say that a string is matched by a pattern if it is a member of the
  369. set described by the pattern.  Patterns are composed of sub-patterns
  370. which are patterns in themselves; this is how complicated patterns may
  371. be formed.
  372.  
  373. The following section describes the rules used for grep pattern matching
  374. and replacement step by step. By learning these rules, and working
  375. through some examples you should be able to understand how each of the
  376. elements of a grep patterns works and be able to make your own.
  377.  
  378. In some instances, the 'Case Sensitive' option will affect the results
  379. of a pattern match.  We have noted below when this is the case.
  380.  
  381.  
  382. Grep Pattern Rules
  383.  
  384. 1. Any character, with certain exceptions described below, is a pattern
  385. that matches itself.
  386.  
  387. 2.    A pattern x followed by a pattern y forms a pattern xy that matches
  388. any string Bu where B can be matched by x and u can be matched by y.  We
  389. can, of course, take the compound pattern xy and concatenate yet another
  390. pattern z onto it, forming the pattern xyz.
  391.  
  392. 3.    The character . is a pattern that will match any character.
  393.  
  394. 4.    The character \ followed by any character except one of the digits
  395. 1-9 is a pattern that matches that character. (You would use this to
  396. find special characters, such as the . character. To search for a
  397. period, you would use \.).
  398.  
  399. 5.    A string of characters s surrounded by square brackets ([ and a ])
  400. forms a pattern [s] that matches a single instance of one of the
  401. characters in the string s.  Note that the case sensitivity flag does
  402. not apply to characters between square brackets:  letters must match
  403. exactly.
  404.  
  405. 5a.     The pattern [^B] matches any character that is not in the string
  406. B. Special characters will be taken literally in this context.  Again,
  407. case sensitivity doesn't apply to characters between square brackets.
  408.  
  409. 5b.    If a string of three characters in the form [a-b] occurs in the
  410. pattern p, this represents all of the characters from a to b inclusive. 
  411. All special characters are taken literally;  i.e., [!-.] denotes the
  412. characters from ! to .. Notice that the only way to include the
  413. character ] in p is to make it the very first character.  Likewise, the
  414. only way to include the character - in p is to have it either at the
  415. very beginning or the very end of p.  Single characters and ranges may
  416. both be used between brackets.
  417.  
  418. 6a.    Any pattern p formed by any combination of rules 1 or 3-5b
  419. followed by a * forms the pattern p* that matches zero or more
  420. consecutive occurrences of characters matched by p.
  421.  
  422. 6c.    Any pattern p formed by any combination of rules 1 or 3-5b
  423. followed by a ? forms the pattern p? that matches zero or one
  424. consecutive occurrences of characters matched by p.
  425.  
  426. We now have the ability to form patterns that are composed of
  427. sub-patterns, and will find it useful to "remember" sub-strings matched
  428. by sub-patterns and to be able to match against those substrings.
  429.  
  430. 7.    A pattern surrounded by ( and ) is a pattern that matches whatever
  431. the sub-pattern matches.  This is useful for matching two or more
  432. instances of the same string and when doing replacements.
  433.  
  434. Sometimes it is useful to be able to "constrain" patterns to match only if
  435. certain conditions in the context outside the string matched are met.
  436.  
  437. 8.    A pattern p that is preceded by a ^ forms a pattern ^p.  If the
  438. pattern ^p is not preceded by any other pattern, it matches whatever p
  439. matches as long as the first character matched by p occurs at the
  440. beginning of a line.  If the pattern ^p is preceded by another pattern,
  441. then the ^ is taken literally.
  442.  
  443. 9.    A pattern p that is followed by a $ forms a pattern p$.  If the
  444. pattern p$ is not followed by any other pattern, it matches whatever p
  445. matches as long as the last character matched by p occurs at the end of
  446. a line.  If the pattern p$ is followed by another pattern, then the $ is
  447. taken literally.
  448.  
  449. Note that the characters ^ and $ constrain pattern matches to begin or
  450. end at line boundaries, and so can be combined to constrain a pattern to
  451. match an entire line only (as in the above example).
  452.  
  453. Grep provides not only a more sophisticated method of searching, but a
  454. sophisticated method of replacing as well.  In a replacement string, the
  455. following substitutions are made before any text replacement occurs:
  456.  
  457. 1.    Each occurrence of the character & is replaced with whatever was
  458. last matched by the entire pattern.
  459.  
  460. 2.    Each occurrence of a string of the form \n, where n is one of the
  461. digits 1-9, is replaced by whatever was last matched by the sub-pattern
  462. beginning with the nth occurrence of (.
  463.  
  464. 3.    Each occurrence of a string of the form \p, where p is other than
  465. one of the digits 1-9, is replaced by p.
  466.  
  467. This allows you to not only be able to search for a string satisfying a
  468. complex set of conditions, but also to be able to do a subsequent
  469. replacement that varies depending on the string that is matched. Note
  470. that this does not take into account escape sequences, such as \t,
  471. \r, \n, \\, etc. 
  472.  
  473. Example 1:
  474.  
  475. Suppose that you have written a program that is to become a Macintosh
  476. application (i.e., it uses the Macintosh ToolBox instead of stdio for
  477. the user interface).  Suppose also that you have discovered that you
  478. have forgotten to put a \p at the beginning of your string constants, so
  479. that your program is trying to pass C strings instead of Pascal strings
  480. to the Toolbox (which only knows how to deal with Pascal strings).  
  481.  
  482. You can easily change all your C strings to Pascal strings as follows:
  483.  
  484. search for:            "(.*)"
  485.  
  486. replace with:        "\\p\1"
  487.  
  488. This works by locating a pair of parentheses (your C string contents),
  489. and matching their contents as part of a subpattern, i.e. locating zero
  490. or more instances of any character which is contained within a pair of
  491. double quotes. The replacement operation then specifies that you start
  492. with another pair of double quotes, and within them, place the \p
  493. followed by the contents of the last subpattern match, which in this
  494. case consists of the C string contents. The extra leading backslash 
  495. ensures that the backslash character immediately preceding the \p is
  496. inserted literally. 
  497.  
  498. Example 2:
  499.  
  500. Suppose you decided to reverse the two arguments of the function
  501. "foo". You might try foo\(([^,]*),([^)]*)\) as the search pattern
  502. and foo(\2, \1) as the replacement pattern.  How does the search
  503. pattern work?
  504.  
  505. Let's assume we're trying to match some text that looks like write(1,*bar)
  506.  
  507.     foo\(([^,]*),([^)]*)\)    matches    foo(1,*bar)
  508.  
  509. Since ([^,]*) matched 1 and ([^)]*) matched *bar, the two arguments to
  510. foo, the replacement pattern foo(\2, \1) will result in foo(*bar, 1)
  511.  
  512. This, unfortunately, won't work in the case of foo(1,(*bar)+2), since
  513. ([^)]*) will match only up to the first right parenthesis, leaving +2)
  514. unmatched.  If we're sure that all calls to foo end with a semicolon,
  515. however, we can change our pattern to foo\(([^,]*),([^;]*)\);. In this
  516. pattern, instead of trying to match the second argument by matching
  517. everything up to the first right parenthesis, we match everything up to
  518. the ); which terminates the invocation of foo.
  519.  
  520.  
  521. Example 3:
  522.  
  523. Suppose that you are trying to remove all of the HTML tags for bold text
  524. from a given document, or any part of one. The recipe by which bold tags
  525. work is simply to insert the opening tag <B> and the closing tag </B>
  526. around the text which you wish to appear in bold. 
  527.  
  528. So long as both tags are on the same line, it is fairly simple to
  529. accomplish such a task. (If they are on different lines, you must know
  530. how many intervening line breaks there are between the opening and
  531. closing tags, because the grep engine cannot handle an indefinite set of
  532. line breaks.) So, you can do something like this
  533.  
  534. search for:            <B>(.*)</B>
  535.  
  536. replace with:        \1
  537.  
  538. where <B> matches the opening tag and </B> matches the closing tag.
  539. Between these tags are a pair of parentheses which mark the use of a
  540. sub-pattern, containing a set of zero or more instances of any
  541. character(s), so that you can also remove a blank pair of tags. The \1
  542. in the replace field indicates that the contents of the first (and in
  543. this case only) subpattern match will be inserted back into the document
  544. in place of the original found string.
  545.  
  546.  
  547. Using Subpatterns
  548.  
  549. In two of these examples, we show how to analyze a grep pattern by
  550. examining sub-patterns. This is a good way of figuring out how to build
  551. a pattern as well. Grep can be thought of as a small programming
  552. language, with each pattern a program and sub-pattern a statement in
  553. this language. If you try to create a grep pattern by testing a small
  554. sub-pattern, then adding and testing additional sub-patterns until the
  555. complete pattern is built, you may find building complex grep patterns
  556. not nearly as daunting as you first thought.
  557.  
  558. ---
  559. Parting Shots
  560.  
  561. Be sure to read the "BBEdit•od Lite Info" document which comes with the
  562. BBEdit•od Lite software package for complete information on the license
  563. requirements and other details. If you wish to get in touch with us for
  564. any reason, here's how:
  565.  
  566. Postal:        Bare Bones Software, Inc.
  567.             P.O. Box 1048
  568.             Bedford, MA  01730-1048
  569.  
  570. Web page:    http://www.barebones.com/
  571.  
  572. Email:      bbsw@barebones.com
  573.  
  574. Phone:      +1 617 778 3100
  575. Fax:        +1 617 778 3111
  576.  
  577. Please note that we cannot provide technical support for BBEdit Lite or
  578. our other freeware products via phone or fax; however, if you contact us
  579. via email, we will be happy to assist you.
  580.  
  581. =============================================================================
  582. All products mentioned are trademarks or registered trademarks of their 
  583. respective holders.
  584.  
  585. This document is written by and copyright (c)1995-1996 by Bare Bones Software, 
  586. Inc. It may be redistributed freely as long as it is not modified in any 
  587. way. Information presented here is accurate as of the time of writing, but 
  588. is subject to change without notice.
  589.  
  590. BBEdit Lite is copyright (c)1992-1996 Bare Bones Software, Inc., all
  591. rights reserved. Please see the enclosed informational material for
  592. license requirements.
  593.  
  594. =end=
  595.